package cn.platform.util.identify;

import cn.dev33.satoken.stp.StpUtil;
import cn.platform.entity.UserAccount;

import java.util.concurrent.ConcurrentHashMap;

/**
 * 账号身份验证相关
 */
public class SessionToken {

    private static final ConcurrentHashMap<String, UserAccount> activeUsers = new ConcurrentHashMap<>();

    private SessionToken() {}

    /**
     * 用户登录时分配唯一的会话令牌
     */
    public static String login(UserAccount userAccount) {
        StpUtil.login(String.format("%d%s", userAccount.getId(), userAccount.getUsername()));
        String token = StpUtil.getTokenValue();
        StpUtil.getTokenSession().set("userAccount", userAccount);
        return token;
    }

    /**
     * 清除目标登录状态
     */
    public static void logout(){
        StpUtil.logout();
    }

    /**
     * 检查当前会话的token是否有效
     */
    public static void checkLogin() {
        StpUtil.checkLogin();
    }

    /**
     * 获取当前会话的用户信息
     */
    public static UserAccount getUserAccount() {
        return StpUtil.getTokenSession().getModel("userAccount", UserAccount.class);
    }
}

